package cn.wolfcode.shop.seckillapi.service;

import cn.wolfcode.shop.seckillapi.domain.OrderInfo;
import cn.wolfcode.shop.seckillapi.domain.SeckillOrder;
import cn.wolfcode.shop.seckillapi.vo.SeckillOrderVO;

public interface ISeckillOrderService {


    /**
     * 创建秒杀订单
     * @param seckillOrderVO
     * @param id
     * @return
     */
    String doSeckill(SeckillOrderVO seckillOrderVO, Long id);

    /**
     * 根据订单号查询订单
     * @param orderNo
     * @return
     */
    OrderInfo findByOrderNo(String orderNo);

    /**
     * Redis初始化订单数据
     */
    void orderInit();

    /**
     * 根据商品ID 回滚数据
     * @param goodId
     */
    void syncStock(Long goodId);

    /**
     * 订单超时,根据订单号,商品ID 做Redis数据回滚,MySQL数据库回滚,
     * @param orderNo
     * @param goodId
     */
    void timeOutCancelOrder(String orderNo, Long goodId);

    /**
     * 根据订单号orderNo 更新对应订单状态为statusAccountPaid
     * @param orderNo
     * @param statusAccountPaid
     * @return
     */
    boolean updatePayState(String orderNo, Integer statusAccountPaid);
}
